package battleco

import "wails/schema/enums/battleenum"

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现
type C表现 struct {

	// @alias 标识
	B标识 string

	// @alias 标签
	B标签 map[string]string

	// 设置后会使用[替换类]代替
	// @alias 替换类
	T替换类 string

	// @alias 创建表现
	C创建表现 map[string]string `link:"表现"`
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_宏
type C表现_宏 struct {
	C表现

	// 宏脚本选择的目标表现
	// 如果未设置, 默认采用当前域的主表现
	// @alias 目标查找
	H目标查找 *SActorRequest

	// 宏创建后，为目标注册的脚本
	// @alias 目标事件
	M目标事件 map[string]*S表现脚本
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_模型
type C表现_模型 struct {
	C表现_方位

	// @alias 所在层
	T所在层 battleenum.E表现所在层

	// @alias 模型
	M模型 string `link:"模型"`

	// 初始完动画名称
	// @alias 初始动画名称
	C初始动画名称 string

	// @alias 播放完成时自动销毁
	B播放完成时自动销毁 bool
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_区域
type C表现_区域 struct {
	C表现_方位

	// @alias 预设
	Y预设 string `link:"预设"`

	// @alias 原点位置
	// 配置该效果的中心点的位置
	Y原点位置 *SActorRequest

	// @alias 指向位置
	// 当区域为矩形/扇形时有效, 发射位置[F发射位置]指向轰击位置[ImpactLocation]形成一个方向
	Z指向位置 *SActorRequest

	// 效果的区域参数
	// 轰击位置[ImpactLocation]决定了区域的中心点
	// @alias 区域集
	Q区域集 map[string]interface{} `_type:"区域"`
}

type S表现替换模型 struct {
	// @alias 标识
	B标识 string
	// @alias 模型
	M模型 string `link:"模型"`
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_单位
type C表现_单位 struct {
	C表现_模型

	// @alias 单位
	D单位 string `link:"单位"`

	// @alias 监视器
	J监视器 string `link:"表现" linkType:"表现_监视器"`

	// @alias 死亡模型
	S死亡模型 map[battleenum.DeathType]*S单位表现死亡模型
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_装饰品
type C表现_装饰品 struct {
	C表现_模型

	// @alias 足印
	Z足印 string `link:"足印"`
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_监视器
type C表现_监视器 struct {
	C表现_方位

	// @alias 预设
	Y预设 string `link:"预设"`
	// @alias 提示文字
	T提示文字 map[string]*S监视器提示文字
}

type S监视器提示文字 struct {
	// @alias 标识
	B标识 string
	// @alias 预设
	Y预设 string `link:"预设"`
	// @alias 加入队列
	J加入队列 bool
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_文字
type C表现_文字 struct {
	C表现_方位

	// @alias 预设
	Y预设 string `link:"预设"`
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_激光
type C表现_激光 struct {
	C表现_模型
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_声音
type C表现_声音 struct {
	C表现_方位
}

// 由系统控制
// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_地形
type C表现_地形 struct {
	C表现_方位
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_扩展
type C表现_扩展 struct {
	C表现_方位

	// @alias 所在层
	T所在层 battleenum.E表现所在层

	// @alias 预设
	Y预设 string `link:"预设"`
}

// @schema_export --ident=schema --json --config=表现
// @schema_go
// @cache_ts
// @alias 表现_场景
type C表现_场景 struct {
	C表现
}

type S表现脚本 struct {
	// @alias 消息
	X消息 interface{} `_type:"表现层消息"`
	// @alias 动作
	D动作 map[string]interface{} `_type:"表现层动作"`
	// @alias 条件
	T条件 map[string]interface{} `_type:"表现层条件"`
}

type S单位表现死亡模型 struct {
	// @alias 模型
	M模型 string `link:"模型"`
	// @alias 动画名称
	D动画名称 string
	// @alias 音效
	Y音效 string `link:"音效"`
}
